/*
如果一个正整数n至少在两个不同的进位制b1和b2下都是回文数(2≤b1，b2≤10)，则称n是双基回文数（注意，回文数不能包含前导零）。
输入正整数S＜10^6，输出比S大的最小双基回文数。
样例输入：
1600000
样例输出：
1632995
--------------------------------------------------------------------------------
分析：双基回文数很多，密度很大，所以可以直接从n+1开始依次判断每个数是否是双基回文数。
 */

package com.yuan.algorithms.Algorithm_2;

import java.util.Scanner;
public class 枚举_双基回文数 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int s = sc.nextInt();
            for (int i = s+1; ; i++) {
                if (judge(i)) {
                    System.out.println(i);
                    break;
                }
            }
        }
    }
    /**
     * 判断s是否是双基回文数
     * @param s
     * @return boolean
     */
    public static boolean judge(int s){
        int sum = 0;//记录不同进制下是回文数的次数
        final int _S = s;
        for (int i = 2; i <= 10; i++) {
            String temp = "";//用字符串保存，便于判断
            s = _S;
            while(s >= 1){
                temp += s%i;
                s /= i;
            }
            //反转字符串
            String reverseTemp = "";
            for (int j = temp.length()-1; j >= 0; j--) {
                reverseTemp += temp.charAt(j);
            }
            //System.out.println(temp);
            //System.out.println(reverseTemp);
            if (temp.equals(reverseTemp)) {
                sum++;
                if (sum>=2) {
                    return true;
                }
            }
        }
        return false;
    }
}
